Initramfs mit Dropbear unter Debian

 · 2 min read
 · Stefan Hellmann
Last updated: October 26, 2024

Damit ich auch remote das Verschlüsselungspasswort von cryptsetup eingeben kann wenn ich den PC durchboote benötige ich Dropbear im Initramfs. Dropbear stellt einen SSH Dienst im Initramfs bereit, so dass ich direkt nach dem Grub mich per SSH verbinden kann und meine Festplatte entschlüsseln kann.

Um unter Debian busybox im Initramfs nutzen zu können müssen folgende Schritte durchgeführt werden_

Zuerst muss das entsprechende Paket installiert werden:

apt install dropbear-initramfs

Nach der Installation wird vermutlich direkt ein Fehler angezeigt, dass keine gültige authorized_keys Datei vorliegt. Dieses muss unter folgendem Ordner angelegt werden:

/etc/dropbear/initramfs/authorized_keys

Die Datei sollte unbedingt mit den Rechten 0600 erstellt werden. Der Aufbau ist identisch zu einer normalen authorized_keys Datei von z.B. dem standard OpenSSH Daemon.

Anschließend muss dass initramfs neu gebaut werden:

update-initramfs -u -k all

Damit wir man sich dann auch per SSH verbinden kann müssen dem Grub noch die IP Einstellungen mitgeteilt werden. Diese werden in folgender Datei konfiguriert:

/etc/default/grub

Dort muss die Zeile GRUB_CMDLINE_LINUX_DEFAULT angepasst werden:

GRUB_CMDLINE_LINUX_DEFAULT="ip=192.168.1.2::192.168.1.1::255.255.255.0 quiet"

Die Segmente teilen sie wie folgt auf:

ip=IPADDRESS::GATEWAY::NETMASK

Um die Grubconfig zu aktualisieren muss anschließend folgender Befehl ausgeführt werden:

update-grub

Wenn man sich dann per SSH dorthin verbindet hat man immer das Problem, dass der Dropbear einen anderen SSH Host Key hat, als der SSH Server (wenn der Server gestartet ist). Diese Problem umgeehe ich damit, dass ich mir zusätzlich einen DNS alias angelegt habe. Nachdem der Server duchgebootet wurde, weiß ich, dass der Dropbear gestartet wurde und mir nun einen einen anderen Host Key präsentiert. Deshalb muss ich mich zu diesem mit dem Alias Name verbinden. Das geanze sieht dann z.B. so aus:

Der Server wird duchgebootet und der Dropbear startet. Ich verbinde mich via SSH um z.B. das cryptsetup Password einzugeben mit folgendem Befehl:

ssh server-dropbear.pcspinnt.de

Der Fingerprint wurde im DNS als SSHFP Record hinterlegt und mein Client validiert diesen. Wenn der Fingeprint stimmt kann ich mich normal als root mit meinem eigenen Key dann dort anmelden.

Um das Verschlüsselungspasswort dann einzugeben muss folgender Befehl ausgeführt werden:

cryptroot-unlock

Sobald der Server dann normal gestartet ist kann ich mich gegen den Standard OpenSSH Dameon (der einen anderen Hostkey hat) verbinden:

ssh server.pcspinnt.de

Der Fingerprint wird auch gegen den DNS SSHFP Record validiert. Da es zwei komplett unterschiedliche Hostnames sind, wird mein Client niemals anmeckern, dass er den Host schon unter einem anderen Fingerprint kennt.